#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){
	int x=0;bool f=0;char ch=getchar();
	while(ch<'0'||ch>'9')f^=(ch=='-'),ch=getchar();
	while('0'<=ch&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return f?-x:x;
}int pstk[40];
inline void write(ll x){
	if(x==0)return void(putchar('0'));
	if(x<0)putchar('-'),x=-x;
	int len=0;
	for(;x;x/=10)pstk[++len]=x%10;
	while(len)putchar(pstk[len--]+48);
}
bool st;
const int Maxn=8e5+5;
int n;
struct edge{int u,v,w;}e[Maxn];
int head[Maxn],to[Maxn<<1],nxt[Maxn<<1],w[Maxn<<1],cnt1;
inline void add(int u,int v,int w1){
	to[++cnt1]=v;nxt[cnt1]=head[u];
	w[cnt1]=w1;head[u]=cnt1;
}
ll f[Maxn][22],g[Maxn][22],ans[Maxn],p[Maxn],sum[Maxn],tmp[22];
int a[Maxn];
int fa[Maxn],dfn[Maxn],cnt,si[Maxn];
void dfs(int u,int v){
	fa[u]=v;dfn[u]=++cnt;si[u]=1;
	for(int i=head[u];i;i=nxt[i]){
		int y=to[i];if(y==v)continue;
		a[y]=w[i];dfs(y,u);si[u]+=si[y];
		for(int j=1;j<=20;j++)tmp[j]=0;
		tmp[w[i]]++;
		for(int j=1;j<w[i];j++)tmp[j]+=f[y][j];
		for(int j=w[i];j<=20;j++)tmp[w[i]]+=f[y][j];
		for(int j=1;j<=20;j++){
			for(int k=1;k<j;k++)ans[dfn[u]]+=f[u][j]*tmp[k]*k;
			for(int k=j;k<=20;k++)ans[dfn[u]]+=f[u][j]*tmp[k]*j;
		}
		for(int j=1;j<=20;j++)f[u][j]+=tmp[j];
	}for(int j=1;j<=20;j++)ans[dfn[u]]+=f[u][j]*j;
}
void dfs1(int u,int v){
	for(int i=head[u];i;i=nxt[i]){
		int y=to[i];if(y==v)continue;
		for(int j=1;j<w[i];j++)f[u][j]-=f[y][j];
		for(int j=w[i];j<=20;j++)f[u][w[i]]-=f[y][j];
		
//		g[y][w[i]]++;
		for(int j=1;j<w[i];j++)g[y][j]+=g[u][j]+f[u][j];
		for(int j=w[i];j<=20;j++)g[y][w[i]]+=g[u][j]+f[u][j];
		
		for(int j=1;j<w[i];j++)f[u][j]+=f[y][j];
		for(int j=w[i];j<=20;j++)f[u][w[i]]+=f[y][j];
		dfs1(y,u);
	}
}
bool en;
int main(){
	freopen("tatooine.in","r",stdin);
	freopen("tatooine.out","w",stdout);
//	cerr<<(&st-&en)/1024.0/1024.0;
	n=read();
	for(int i=1;i<n;i++){
		int u=read(),v=read(),w=read();
		e[i]={u,v,w};add(u,v,w);add(v,u,w);
	}dfs(1,0);dfs1(1,0);
	for(int i=1;i<=n;i++)sum[i]=sum[i-1]+ans[i];
	for(int u=1;u<=n;u++){
		p[u]=sum[n];
		for(int j=1;j<=20;j++){
			for(int k=1;k<j;k++)p[u]-=k*f[u][j]*g[u][k];
			for(int k=j;k<=20;k++)p[u]-=j*f[u][j]*g[u][k];
			p[u]-=g[u][j]*j;
		}
	}
	for(int i=1;i<n;i++){
		if(fa[e[i].u]!=e[i].v)swap(e[i].u,e[i].v);
		write(p[e[i].u]);putchar('\n');
	}
//	printf("%lld\n",sum[n]);
//	for(int i=1;i<=n;i++)printf("ans[%d]=%d\n",i,ans[i]);
//	for(int i=1;i<=n;i++)printf("p[%d]=%d\n",i,p[i]);
//	for(int i=1;i<=n;i++)
//		for(int j=1;j<=10;j++)if(j==1||j==5||j==10)printf("f[%d][%d]=%d\n",i,j,f[i][j]);
//	for(int i=1;i<=n;i++)
//		for(int j=1;j<=10;j++)if(j==1||j==5||j==10)printf("g[%d][%d]=%d\n",i,j,g[i][j]);
	return 0;
}
/*
3
1 2 4
3 2 5

4
2 1 10
3 1 1
4 1 5

*/
